package com.bootcamp.mall.service.order;

import com.bootcamp.mall.model.bo.order.*;
import com.bootcamp.mall.model.vo.order.GetOrderByStateVO;
import com.bootcamp.mall.model.vo.order.OrderByPageVO;
import com.bootcamp.mall.model.vo.order.ShowOrderVO;

import java.util.List;

/**
 * @program: mall
 * @description:
 * @author: Keyu Li
 * @create: 2021-11-11 17:32
 **/

public interface OrderService {
    OrderByPageVO orderByPage(OrderByPageBO orderByPageBO);

    ShowOrderVO showOrder(Integer id);

    /**
     * 返回 0一切正常；-1表示服务器异常
     * @param changeOrderBO:
     * @return java.lang.Integer
     * @date 11/12/2021 21:53
     */
    Integer changeOrder(ChangeOrderBO changeOrderBO);

    /**
     * 返回 0 表示正常删除； 返回 -1 表示删除异常
     * @param id:
     * @return java.lang.Integer
     * @date 11/12/2021 21:46
     */
    Integer deleteOrder(Integer id);

    /**
     * 根据 token(nickname)获取 userid,nickname，recipient, address, phone
     * 根据 goodDetailId(SpecId)获取specName, goodsId, goodsName, unitPrice
     * 根据 createTime自动生成 createTime
     * 插入到order表当中
     * @param addOrderBO:
     * @return java.lang.Integer
     * @date 11/13/2021 11:19
     */
    Integer addOrder(AddOrderBO addOrderBO);

    List<GetOrderByStateVO> getOrderByState(Integer state, String nickname);

    /**
     * 根据 order id 更改num，account以及 state为1（由未发货转变为已经发货）
     * @param settleBO:
     * @return java.lang.Integer
     * @date 11/13/2021 15:37
     */
    Integer settleAccount(SettleAccountBO settleBO);

    Integer changeState(Integer id);

    /**
     * 插入到评价表中，同时order表 hasComment置为 true
     * @param commentBO:
     * @return java.lang.Integer
     * @date 11/13/2021 16:18
     */
    Integer sendComment(CommentBO commentBO);
}
